<?xml version="1.0" encoding="utf-8"?>
<!--
**** BEGIN LICENSE BLOCK *****
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/

Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is XUL Schema.

The Initial Developer of the Original Code is Mihailo Lalevic.
Copyright (C) 2009, Mihailo Lalevic. All Rights Reserved.

Contributor(s): 
  - Ondrej Donek, <ondrejd@gmail.com>

**** END LICENSE BLOCK ****
-->
<xs:schema targetNamespace="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
>


  <xs:include schemaLocation="xulAttributeTypes.xsd" />

  <!-- global attributes are wrapped in group since global attributes are always qualified. phew! -->
  <xs:attributeGroup name="id">
    <xs:attribute name="id" type="xs:ID" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:id">
          A unique identifier so that you can identify the element with. You can use this as a parameter to getElementById() and other DOM functions and to reference the element in style sheets.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="container">
  <xs:attribute name="container" type="xs:boolean" use="optional">
    <xs:annotation>
      <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:container">
        Set to true if the element is to act as a container which can have child elements. This would be used for folders. This will be set by the template builder as needed.
      </xs:documentation>
    </xs:annotation>
  </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="left">
    <xs:attribute name="left" type="xs:integer" use="optional">
    <xs:annotation>
      <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:left">
        For elements placed directly within a stack, specifies the pixel position of the left edge of the element relative to the left edge of the stack.
      </xs:documentation>
    </xs:annotation>
  </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="right">
    <xs:attribute name="right" type="xs:integer" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:right">
          Requires Gecko 2.0!
          For elements placed directly within a stack, specifies the pixel position of the right edge of the element relative to the right edge of the stack.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="position">
    <xs:attribute name="position" type="xs:integer" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:position">
          When an element is in an overlay, the position is an index where the child is inserted. The position is one-based, so use a value of 1 to place the element at the beginning. This attribute is ignored if either an insertbefore or insertafter attribute matches an element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="top">
    <xs:attribute name="top" type="xs:integer" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:top">
          For elements placed directly within a stack, specifies the pixel position of the top edge of the element relative to the top edge of the stack.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="bottom">
    <xs:attribute name="bottom" type="xs:integer" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:bottom">
          Requires Gecko 2.0!
          For elements placed directly within a stack, specifies the pixel position of the bottom edge of the element relative to the bottom edge of the stack.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="orient">
    <xs:attribute name="orient" type="orientAttributeType" use="optional"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="uri">
    <xs:attribute name="uri" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:uri">
          For template-generated content, the attribute should be placed on the element where content generation should begin. Thus, it should be placed on an element that is a descendant of a template. The value should be set to rdf:*.

          Elements that appear inside the element with the attribute will be repeated for each node in the RDF datasource. Elements outside will appear only once.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dir">
    <xs:attribute name="dir" type="dirAttributeType" use="optional"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="empty">
    <xs:attribute name="empty" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:empty">
          Set to true if the element is a container that contains no children. This will be set by the template builder as needed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="ref">
    <xs:attribute name="ref" type="xs:anyURI" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ref">
          For template-generated elements, this attribute is used to specify the root RDF node where content generation begins. This will correspond to the value of an about attribute on an RDF container. This attribute should be placed alongside the datasources attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="width">
    <xs:attribute name="width" type="xs:nonNegativeInteger" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:width">
          The preferred width of the element. The value should not include a unit as all values are in pixels. The actual displayed width may be different if the element or its contents have a minimum or maximum width, or the size is adjusted by the flexibility or alignment of its parent. The CSS width property may also be used.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="class">
    <xs:attribute name="class" type="classAttributeType" use="optional"/>
  </xs:attributeGroup>

  <xs:attributeGroup name="xulElementOverridenAttributes">
    <xs:attributeGroup ref="bottom" />
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="dir"  />
    <xs:attributeGroup ref="empty"  />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="ref"  />
    <xs:attributeGroup ref="right" />
    <xs:attributeGroup ref="top"  />
    <xs:attributeGroup ref="uri"  />
    <xs:attributeGroup ref="width" />
  </xs:attributeGroup>

  <xs:attributeGroup name="oncommand">
    <xs:attribute name="oncommand" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/oncommand">
          This event handler is called when the command is activated. This occurs when a user selects a menu item or presses a keyboard shortcut attached to the command.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  
  <!-- end globals -->

  <xs:attributeGroup name="windowEvents">
    <xs:attribute name="onload" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/En/DOM/Window.onload">
          An event handler for the load event of a window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onunload" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/En/DOM/Window.onunload">
          The unload event is raised when the document is unloaded.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="formElementEvents">
    <xs:attribute name="onchange" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="https://developer.mozilla.org/En/XUL/Attribute/Onchange">
          The code in the onchange attribute is called when the value of the element is changed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onselect" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation>
          An event handler for the select event on the control.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onblur" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="https://developer.mozilla.org/En/DOM/Element.onblur">
          The onblur property returns the onBlur event handler code, if any, that exists on the current element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onfocus" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="https://developer.mozilla.org/En/DOM/Element.onfocus">
          The onfocus property returns the onFocus event handler code on the current element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="xulElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <xs:attributeGroup ref="xulElementOverridenAttributes" />
  </xs:attributeGroup>

  <xs:attributeGroup name="xulElementNonOverridenAttributes">
      <xs:attribute name="align" use="optional" type="alignAttributeType" />
      <xs:attribute name="allowevents" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:allowevents">
            If true, events are passed to children of the element. Otherwise, events are passed to the element only.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="allownegativeassertions" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:allownegativeassertions">
            Valid on any element that has a datasources attribute. When multiple datasources are used, one may override an assertion from another. This attribute, if true, which is the default, allows a datasource to negate an earlier assertion.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="coalesceduplicatearcs" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:coalesceduplicatearcs">
            Valid on any element that has a datasources attribute. When multiple datasources are used, one may override an assertion from another. This attribute, if true, which is the default, allows a datasource to negate an earlier assertion.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="collapsed" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:collapsed">
            If true, then the element is collapsed and does not appear. It is equivalent to setting the CSS visibility property to collapse.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="containment" use="optional" type="containmentAttributeType" />
      <xs:attribute name="context" use="optional" type="contextAttributeType" />
      <xs:attribute name="contextmenu" use="optional" type="contextAttributeType">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:contextmenu">
            Alternate name for the context attribute, but also has a corresponding script property contextMenu.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="datasources" use="optional" type="datasourcesAttributeType" />
      <xs:attribute name="equalsize" use="optional" type="equalsizeAttributeType" />
      <xs:attribute name="flags" use="optional" type="flagsArrayAttributeType" />
      <xs:attribute name="flex" use="optional" type="xs:integer" default="0">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:flex">
            Indicates the flexibility of the element, which indicates how an element's container distributes remaining empty space among its children. Flexible elements grow and shrink to fit their given space. Elements with larger flex values will be made larger than elements with lower flex values, at the ratio determined by the two elements. The actual value is not relevant unless there are other flexible elements within the same container. Once the default sizes of elements in a box are calculated, the remaining space in the box is divided among the flexible elements, according to their flex ratios. Specifying a flex value of 0 has the same effect as leaving the flex attribute out entirely.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="height" use="optional" type="xs:nonNegativeInteger">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:height">
            The preferred height of the element in pixels. The actual displayed height may be different if the element or its contents have a minimum or maximum height. The CSS height property may also be used.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="hidden" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:hidden">
            If set to true, the element is not displayed. This is similar to setting the CSS display property to 'none'.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attributeGroup ref="id" />
      <xs:attribute name="insertafter" use="optional" type="xs:IDREFS">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:insertafter">
            When an element is in an overlay, the insertafter attribute specifies the id of the element in the base window that the element should appear after. This attribute overrides the insertbefore attribute. This value may be a comma-separated list of ids, which are scanned and the first one found in the window is used.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="insertbefore" use="optional" type="xs:IDREFS">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:insertbefore">
            When an element is in an overlay, the insertbefore attribute specifies the id of the element in the base window that the element should appear before. This value may be a comma-separated list of ids, which are scanned and the first one found in the window is used.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>

      <xs:attribute name="maxheight" use="optional" type="xs:nonNegativeInteger">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:maxheight">
            The maximum height of the element. This corresponds to the max-height CSS property.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="maxwidth" use="optional" type="xs:nonNegativeInteger">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:maxwidth">
            The maximum width of the element. This corresponds to the max-width CSS property.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="menu" use="optional" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:menu">
            Alternate name for the popup attribute, but also has a corresponding script property 'menu'.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="minheight" use="optional" type="xs:nonNegativeInteger">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:minheight">
            The minimum height of the element. This corresponds to the min-height CSS property.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="minwidth" use="optional" type="xs:nonNegativeInteger">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:minwidth">
            The minimum width of the element. This corresponds to the min-width CSS property.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="mousethrough" use="optional" type="mousethroughAttributeType" />
      <xs:attribute name="observes" use="optional" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:observes">
            Set to an id of a broadcaster element that is being observed by the element. If an attribute changes in the broadcaster it is also changed in the observer.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="ordinal" use="optional" type="xs:integer">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ordinal">
            An integer which specifies the position of the element within its parent. By default, elements appear in the order they appear in the XUL code. The ordinal attribute can be used to change the order. Note the default ordinal for elements is 1. You can retrieve the displayed order by using the properties of the boxObject of the container.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="pack" use="optional" type="packAttributeType" />
      <xs:attribute name="persist" use="optional" type="persistAttributeType" />
      <xs:attribute name="popup" use="optional" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:popup">
            Should be set to the value of the id of the popup element that should appear when the user clicks on the element.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="preference-editable" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:preference-editable">
            Mozilla 1.8
            If true, the element may be used as one that modifies a preference in a prefwindow. The preference attribute may be used to connect to a preference element. This is useful for custom elements implemented in XBL. The element should fire change or select events when the value is changed so that the preference will update accordingly.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="querytype" use="optional" type="querytypeAttributeType" />
      <xs:attribute name="removeelement" use="optional" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:removeelement">
            When placed on an element in an overlay, it indicates that the element in the base file should be removed from the window.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="sortDirection" use="optional" type="sortDirectionAttributeType" />
      <xs:attribute name="sortResource" use="optional" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:sortResource">
            For template-generated content, this specifies the sort key, if you would like the content to be sorted. The key should be the full URI of the resource to sort by, for example 'http://home.netscape.com/NC-rdf#Name'. Place this attribute on the same element as the datasources attribute. Use sortResource2 to specify a secondary sort key.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="sortResource2" use="optional" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:sortResource2">
            A secondary key for sorted content.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="statustext" use="optional" type="xs:string">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:statustext">
            Used to set the text that appears on the status bar when the user moves the mouse over the element. Mozilla doesn't adjust the status bar automatically however. This attribute serves only as a place to keep the text. In Firefox, this text is automatically placed in the statusbar for menuitems on the menu bar.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="style" use="optional" type="xs:string">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:style">
            CSS style rules to be applied to the element. Syntax is as in the HTML style attribute. It is preferred to put style rules in style sheets.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="template" use="optional" type="xs:IDREF">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:template">
            For template generated elements, this attribute may optionally be placed on the root node (the element with the datasources attribute) to refer to a template that exists elsewhere in the XUL code. This template attribute should be set to the id of the template element. This might be used to share a single template between multiple trees or menus. If this attribute is not specified, there should be a template element directly inside the node.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="tooltip" use="optional" type="tooltipAttributeType" />
      <xs:attribute name="tooltiptext" use="optional" type="xs:string">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:tooltiptext">
            Used to set the text which appears in the tooltip when the user moves the mouse over the element. This can be used instead of setting the tooltip to a popup for the common case where it contains only text. The tooltip is displayed in a default tooltip which displays only a label, however the default tooltip may be changed by setting the default attribute on a tooltip element.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="wait-cursor" use="optional" type="xs:boolean">
        <xs:annotation>
          <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:wait-cursor">
            Set this attribute to true to have the cursor switch to a waiting cursor while the mouse is hovering over the element. Usually, you would only use this on the window element or other top-level elements.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="windowElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accelerated" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/accelerated">
          Requires Gecko 2.0
          Set this attribute to true to allow hardware layer managers to accelerate the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="activetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:activetitlebarcolor">
          New in Firefox 3
          Specify background color of the window's titlebar when it is active (foreground). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="chromemargin" use="optional" type="xs:string">
      <!-- TODO Should be "chrome margin" datatype! -->
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/chromemargin">
          Requires Gecko 2.0
          Controls the amount of chrome that should be visible on each side of the window. The specified string should contain four numbers, separated by commas, indicating the margin in pixels for the top, right, bottom, and left edges of the window, respectively. This value may be -1 to use the default margin for that side on the current platform, 0 to have no system border (that is, to extend the client area to the edge of the window), or a value greater than zero to indicate how much less than the default default width you wish the margin on that side to be. If this value turns out to be less than 0, 0 is used.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disablechrome" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/disablechrome">
          Requires Gecko 2.0
          Set this attribute to true to disable chrome in the window. This is used to hide chrome when showing in-browser UI such as the about:addons page, and causes the toolbars to be hidden, with only the tab strip (and, if currently displayed, the add-on bar) left showing.
          Note: This has no effect if the tabs on top preference is turned off.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disablefastfind" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/disablefastfind">
          Requires Gecko 2.0
          Put disablefastfind="true" on the root element of a XUL document, which is intended to be loaded in a tab, to disable the find bar for the tab with this document. This is used to prevent the find bar from being displayed when it's not supported by the content (such as in the Add-ons manager tab).
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="drawintitlebar" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/drawintitlebar">
          Requires Gecko 2.0
          If this attribute is true, the top of the window's content area will begin at the top edge of the title bar, instead of below the title bar. This allows the window to draw in the title bar. This is supported only from window elements, and is ignored on platforms that don't support drawing into the title bar.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="fullscreenbutton" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/fullscreenbutton">
          Requires Gecko 14.0
          Set this attribute to true to display a button in the window chrome to allow the user to switch the window into full screen mode. Supported on Mac OS X 10.7 Lion and later and on Windows. The window receives a "fullscreen" event once the change has been made.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="hidechrome" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:hidechrome">
          Set this attribute to true to have the chrome including the titlebar hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="inactivetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:inactivetitlebarcolor">
          New in Firefox 3
          Specify background color of the window's titlebar when it is inactive (background). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lightweightthemes" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/lightweightthemes">
          Requires Gecko 1.9.2
          true if the window supports lightweight themes, otherwise false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lightweightthemesfooter" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/lightweightthemesfooter">
          Requires Gecko 1.9.2
          Specifies the ID of an element to which a lightweight theme's footer image will be applied.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onload" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>This event is sent to the window after it has been fully loaded. You should place this event handler on the window element. This event may also be used on the image element, or an element that accepts an image attribute, and will be fired when the image has finished loading. For images, this event does not bubble up the element tree, so it will not conflict with the window's load event.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onunload" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>This event is sent to a window when the window has closed. This is done after the close event. You should place this event handler on the window element.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="screenX" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:screenX">
          The horizontal position at which the window appears on the screen.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="screenY" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:screenY">
          The vertical position at which the window appears on the screen.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sizemode" use="optional" type="sizemodeAttributeType" />
    <xs:attribute name="title" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:title">
          The text to appear in the title bar of the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="windowtype" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:windowtype">
          Set to a string which can be used to identify the type of window. This might be used, for example, to distinguish between a browser window and an editor window. Some of Mozilla's window handling functions use this attribute to group windows of the same type together.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="dialogElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="activetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:activetitlebarcolor">
          New in Firefox 3
          Specify background color of the window's titlebar when it is active (foreground). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeyaccept" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeyaccept">
          The access key to use for the "accept" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeycancel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeycancel">
          The access key to use for the "cancel" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeydisclosure" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeydisclosure">
          The access key to use for the "disclosure" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeyextra1" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeyextra1">
          The access key to use for the first extra button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeyextra2" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeyextra2">
          The access key to use for the second extra button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonaccesskeyhelp" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonaccesskeyhelp">
          The access key to use for the "help" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonalign" use="optional" type="alignAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonalign">
          The value of the align attribute for the box containing the buttons.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttondir" use="optional" type="dirAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttondir">
          The value of the dir attribute for the box containing the buttons.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttondisabledaccept" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttondisabledaccept">
          If true, the accept button is disabled.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabelaccept" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabelaccept">
          The label to appear on the "accept" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabelcancel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabelcancel">
          The label to appear on the "cancel" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabeldisclosure" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabeldisclosure">
          The label to appear on the "disclosure" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabelextra1" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabelextra1">
          The label to appear on the first extra button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabelextra2" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabelextra2">
          The label to appear on the second extra button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonlabelhelp" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonlabelhelp">
          The label to appear on the "help" button.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonorient" use="optional" type="orientAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonorient">
          The value of the orient attribute for the box containing the buttons.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonpack" use="optional" type="packAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttonpack">
          The value of the pack attribute for the box containing the buttons.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttons" use="optional" type="dialogButtonsAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:buttons">
          A comma-separated list of buttons to appear in the dialog box. The buttons will be placed in suitable locations for the user's platform and basic event handling will be performed automatically. The following values can be used in the list:
          *  accept: The OK button, which will accept the changes when pressed. This button will also be the default button.
          * cancel: The cancel button which will cancel the operation.
          * help: A help button for displaying help about the dialog.
          * disclosure: A button to show more information. This might be a button or a disclosure triangle.
          * extra1: An optional additional button. You can set its label with the buttonlabelextra1 attribute.
          * extra2: A second optional additional button. You can set its label with the buttonlabelextra2 attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultButton" use="optional" type="dialogDefaultButtonAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:defaultButton">
          Normally this attribute should not be set, but if it is, it specifies the default button in the dialog. Typically, this means that the button will be activated when the Enter key is pressed. This should be set to one of the same values as those for the buttons attribute.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="inactivetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:inactivetitlebarcolor">
          New in Firefox 3
          Specify background color of the window's titlebar when it is inactive (background). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogaccept" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialogaccept">
          The code in this attribute is called when the accept button is pressed, or when the acceptDialog method is called.  If the handler returns true, the dialog will indeed go away, but if it returns false it will not.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogcancel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialogcancel">
          The code in this attribute is called when the "cancel" button is pressed or when the cancelDialog method is called.  If the routine returns true, the dialog will indeed go away, but if it returns false it will not.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogdisclosure" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialogdisclosure">
          The code in this attribute is called when the "disclosure" button is pressed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogextra1" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialogextra1">
          The code in this attribute is called when the first extra button is pressed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogextra2" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialogextra2">
          The code in this attribute is called when the second extra button is pressed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialoghelp" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ondialoghelp">
          The code in this attribute is called when the "help" button is pressed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="title" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:title">
          The text to appear in the title bar of the window.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menubarElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="grippyhidden" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:grippyhidden">
          Not Supported in Firefox!
          When set to true, the grippy will be hidden. When set to false, the default, the grippy will be shown.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="statusbar" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:statusbar">
          If you set this attribute to the id of a statusbar element, the label on the statusbar will update to the statustext of the items on the menu as the user moves the mouse over them.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menuElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="acceltext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:acceltext">
          Text that appears beside beside the menu label to indicate the shortcut key (accelerator key) to use to invoke the command. If this value is set, it overrides an assigned key set in the key attribute. This attribute does not apply to menus directly on the menubar.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label text for the element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:disabled">
          Indicates whether the element is disabled or not.  If this element is set to true the element is disabled.  Disabled elements are usually drawn with grayed-out text.  If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="menuactive" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:menuactive">
          This attribute is set on an item in a menu when it is being hovered over. Typcially, the theme will use this to highlight the item. A DOMMenuItemActive event will be sent to the item when the item is hovered over, and a DOMMenuItemInactive event will be sent to the item when the selection moves away.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="open" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:open">
          For the menu type buttons, the open attribute is set to true when the menu is open. The open attribute is not present if the menu is closed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:value">
          The string attribute allows you to associate a data value with an element.  It is not used for any specific purpose, but you can access it with a script for your own use.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menulistElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label text for the element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disableautoselect" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:disableautoselect">
          If this attribute is true or omitted, the selected item on the menu will update to match what the user entered in the textbox. If the text does not match any of the items in the list, the menu selection is cleared. If this attribute is false, the selection is never updated to match the text box. This attribute applies only to editable menulists.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:disabled">
          Indicates whether the element is disabled or not.  If this element is set to true the element is disabled.  Disabled elements are usually drawn with grayed-out text.  If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="editable" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:editable">
          Indicates that the value of the menulist can be modified by typing directly into the value field. This is rendered as a textbox with a drop-down arrow beside it. The user may enter text into the textbox or select one of the choices by clicking from the drop-down.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="focused" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:focused">
          This attribute is true if the element is focused.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir and orient attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="oncommand" />
    <xs:attribute name="open" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:open">
          For the menu type buttons, the open attribute is set to true when the menu is open. The open attribute is not present if the menu is closed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:preference">
          Connects the element to a corresponding preference.  This attribute only has any effect when used inside a prefwindow.  The value of the preference will be updated to match the value property of the element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="readonly" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:readonly">
          If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sizetopopup" use="optional" type="sizetopopupAttributeType" />
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:tabindex">
          The tab order of the element.  The tab order is the order in which the focus is moved when the user presses the "tab" key.  Elements with a higher tabindex are later in the tab sequence.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:value">
          The string attribute allows you to associate a data value with an element.  It is not used for any specific purpose, but you can access it with a script for your own use.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menupopupElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- Overriden elements -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="position" use="optional" type="positionAttributeType" />
    <xs:attribute name="left" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:popup.left">
          Overrides the horizontal position of the popup specified by the showPopup method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="top" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:popup.top">
          Overrides the vertical position of the popup specified by the showPopup method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional elements -->
    <xs:attribute name="ignorekeys" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:ignorekeys">
          If true, keyboard navigation between items in the popup is disabled.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphidden" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:onpopuphidden">
          This event is sent to a popup after it has been hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphiding" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:onpopuphiding">
          This event is sent to a popup when it is about to be hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshowing" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:onpopupshowing">
          This event is sent to a popup just before it is opened. This handler is usually used to dynamically set the contents when the user requests to display it. Returning false from this event handler prevents the popup from appearing.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshown" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:onpopupshown">
          This event is sent to a popup after it has been opened, much like the onload event is sent to a window when it is opened.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menuitemElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="acceltext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:acceltext">
          Text that appears beside beside the menu label to indicate the shortcut key (accelerator key) to use to invoke the command. If this value is set, it overrides an assigned key set in the key attribute. This attribute does not apply to menus directly on the menubar.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autocheck" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:autocheck">
          If this attribute is true, or left out, the menuitem check mark will update each time the menu item is selected. If this attribute is false, the check mark must be adjusted manually.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checked" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:checked">
          Indicates whether the element is checked or not.
          Use hasAttribute() to determine whether this attribute is set instead of getAttribute().
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:command">
          Set to the id of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="description" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:description">
          Descriptive text to appear in addition to the dialog title.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:disabled">
          Indicates whether the element is disabled or not.  If this element is set to true the element is disabled.  Disabled elements are usually drawn with grayed-out text.  If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir and orient attributes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="key" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:key">
          Set to the id of a key element whose key shortcut is displayed in the menuitem.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="name" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:name">
          Radio menuitems with the same name as put into a group.  Only one menuitem in each radio group can be checked at a time.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:selected">
          Indicates whether the element is selected or not.  This value is read-only.  To change the selection, set either the selectedIndex or selectedItem property of the containing element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:tabindex">
          The tab order of the element.  The tab order is the order in which the focus is moved when the user presses the "tab" key.  Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="typeAttributeType" />
    <xs:attribute name="validate" use="optional" type="validateAttributeType" />
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:value">
          The string attribute allows you to associate a data value with an element.  It is not used for any specific purpose, but you can access it with a script for your own use.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="menuseparatorElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="acceltext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:acceltext">
          Text that appears beside beside the menu label to indicate the shortcut key (accelerator key) to use to invoke the command. If this value is set, it overrides an assigned key set in the key attribute. This attribute does not apply to menus directly on the menubar.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:command">
          Set to the id of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:disabled">
          Indicates whether the element is disabled or not.  If this element is set to true the element is disabled.  Disabled elements are usually drawn with grayed-out text.  If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir and orient attributes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:selected">
          Indicates whether the element is selected or not.  This value is read-only.  To change the selection, set either the selectedIndex or selectedItem property of the containing element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:tabindex">
          The tab order of the element.  The tab order is the order in which the focus is moved when the user presses the "tab" key.  Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:value">
          The string attribute allows you to associate a data value with an element.  It is not used for any specific purpose, but you can access it with a script for your own use.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="deckElementAttributes">
    <!--xs:attributeGroup ref="xulElementAttributes" /--> <!-- the deck element is inheriting box that already has xulElementAttributes -->
    <xs:attribute name="selectedIndex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:selectedIndex">
          Gets and sets the index of the currently selected panel. The first item is at index 0.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="statusbarpanelElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir and orient attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="separatorElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="orient" use="optional" type="separatorOrientAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL:Attribute:separator.orient">
          Used to specify whether the separator is a horizontal or vertical separator. Note that the values are the reverse of what seems more likely.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="splitterElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="collapse" use="optional" type="collapseAttributeType" />
    <xs:attribute name="resizeafter" use="optional" type="resizeafterAttributeType" />
    <xs:attribute name="resizebefore" use="optional" type="resizebeforeAttributeType" />
    <xs:attribute name="state" use="optional" type="stateAttributeType" />
    <xs:attribute name="substate" use="optional" type="substateAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="templateElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="container" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/container
">
          May optionally be set to the variable to use as the container or reference variable. If not specified, the variable specified in the uri
          attribute of the content tag in the template's first rule is used.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    <xs:attribute name="member" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/member">
          May optionally be set to the variable to use as the member variable. If not specified, the variable specified in the uri
          attribute in the action body of the template's first rule is used.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>


  <xs:attributeGroup name="ruleElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes"/>
    <xs:attribute name="iscontainer" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/iscontainer
">
          Indicates whether rules match based on containment. If not specified, the rule may match regardless of whether a node is a container or not.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="isempty" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/isempty">
          Indicates whether rules match based on emptyness. If not specified, the rule may match regardless of whether a node has children or not.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="parent" use="optional" type="tagname">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/parent">
          If set, the rule will only match the corresponding tag. This may be used to have separate rules for leaf and container nodes with different tags.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="parsetype" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/parsetype
">
          If this attribute is set to Integer, the rule will only match RDF nodes with a parse type of Integer.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="whereElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="ignorecase" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ignorecase">
          Set to true to indicate that the case does not matter when making comparisons. Otherwise, the default value is false, to indicate that the value should match with the same case.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="multiple" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/multiple">
          Set to true to indicate that the value
          contains multiple values separated by commas. Any of the values may match. Otherwise, the entire value string is compared.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="negate" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/negate">
          Set to true to indicate that the comparison should be reversed. The where
          clause matches if the condition is false, and does not match if the condition is true.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="rel" use="optional" type="relAttributeType" />
    <xs:attribute name="subject" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/subject">
          The variable or string to compare.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/where.value">
          The value to compare.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="tripleElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="object" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/triple">
          The object of the element. It can be a variable reference, an RDF resource URI, or an RDF literal value.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="predicate" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/triple">
          The predicate or property to match. This must be a URI of the property.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="subject" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/triple">
          The subject of the element. It can be a variable reference or an RDF resource URI.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>


  </xs:attributeGroup>

  <xs:attributeGroup name="queryElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="expr" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/query">
          For XML queries, an XPath expression which returns results. Any namespace prefixes declared on the element may be used within the expression.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>


  </xs:attributeGroup>

  <xs:attributeGroup name="contentElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="uri" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/content">
          Used to specify the variable name for the content. When a rule is evaluated, it scans through each resource in the RDF datasource looking for a match. Each resource is placed in the variable specified in the uri attribute in turn. Then, the other rules are evaluated for a match. This attribute should always be present.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    <xs:attribute name="tag" type="tagname" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/content">
          This may be set to a tag name. If set, the conditions will only match if the template builder is parsing content for an element directly inside this tag. For example, by using a value of treechildren, the condition will only match when placing elements directly inside a treechildren tag. Thus, nested elements will not match because they are directly inside a treeitem . This attribute is useful to provide different rules for outer and inner elements.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    

  </xs:attributeGroup>

  <xs:attributeGroup name="memberElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="container" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/member">
          A variable reference to a node that is expected to be a container. If the variable is the same as the uri  attribute on the content  element, the resource must be a container element in order to match.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    
    <xs:attribute name="child" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/member">
          A variable reference to a node that is expected to be a child of the element that is referred to by the container element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    

  </xs:attributeGroup>

  <xs:attributeGroup name="assignElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="expr" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/assign">
          For XML queries, an XPath expression which returns results. Any namespace prefixes declared on the element may be used within the expression.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="var" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/assign">
          Variable URI to assign to.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

  </xs:attributeGroup>

  <xs:attributeGroup name="arrowscrollboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled " use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled ">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="smoothscroll" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/smoothscroll">
          New in Firefox 3.
          true initially enables smooth scrolling for the corresponding arrowscrollbox, false disables it. Currently, smooth scrolling supports horizontal arrowscrollboxes only.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex " use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex ">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>


  <xs:attributeGroup name="buttonElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autoCheck" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autoCheck">
          If this attribute is true or left out, the checked state of the button will be switched each time the button is pressed. If this attribute is false, the checked state must be adjusted manually. When autoCheck is true, the button type should be "checkbox" or "radio".

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checked" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checked">
          Indicates whether the element is checked or not.
          Use hasAttribute() to determine whether this attribute is set instead of getAttribute().

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checkState" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checkState">
          This attribute may be used to create three state buttons, numbered 0, 1 and 2. When in state 0 or 1, pressing the button will switch to the opposite state. When in state 2, pressing the button will switch to state 0. This means that the button acts like a checkbox except that there is a third state which must be set manually by adjusting the check state. If you wish to have different behavior for how the states are adjusted, set the autoCheck  attribute to false and adjust the state with a script. The type  attribute must be set to checkbox for buttons with a check state. Constants for the possible values for this attribute are in the nsIDOMXULButtonElement interface.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:integer">
          <xs:minInclusive value="0" />
          <xs:maxInclusive value="2" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command
          element that is being observed by the element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dlgtype" use="optional" type="dlgtypeAttributeType" />
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="group" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/group">
          Buttons with type="radio" and the same value for their group attribute are put into the same group. Only one button from each group can be checked at a time. If the user selects one the buttons, the others in the group are unchecked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="icon" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/icon">
          Mozilla 1.8
          This attribute should be used to set the usage for common buttons. Some platforms display these buttons with a small icon indicating their usage. This should be used in place of the image  attribute. Possible values include: accept, cancel, help, open, save, find, clear, yes, no, apply, close, print, add, remove, refresh, go-forward, go-back, properties, select-font, select-color, network. If you are using a button that matches one of these common usages, use the icon attribute to indicate this.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="open" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/open">
          For the menu type  buttons, the open attribute is set to true when the menu is open. The open attribute is not present if the menu is closed.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex " use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex ">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type " use="optional" type="buttontypeAttributeType" />
    <xs:attributeGroup ref="oncommand" />
  </xs:attributeGroup>

  <xs:attributeGroup name="browserElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="autocompleteenabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autocompleteenabled">
          Set to true to enable autocomplete of fields.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autocompletepopup" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autocompletepopup">
          The id of a popup element used to hold autocomplete results for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autoscroll" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autoscroll">
          Set to false to disable autoscroll for this browser. If this attribute is set to true or omitted, autoscroll will be enabled or depending on the user preference general.autoScroll.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disablehistory" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disablehistory">
          If false, an arrow button will appear on the end of the textbox which will open a dropdown menu of all available results. The default value is true, hiding the dropdown button.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disableglobalhistory" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/Attribute/disableglobalhistory">
          New in Firefox 15.0
          Disables global history for the docshell attached to the browser while keeping session history active.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disablesecurity" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disablesecurity">
          Set this attribute to true to disable the security UI for this browser. Omit this attribute off to enable it.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="homepage" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/homepage">
          This attribute allows you to set a homepage for the browser element. It does not have any correlation with the user's browser homepage; instead it is a convenient property to hold a home page. You can switch to this home page using the goHome  method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="showcaret" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/showcaret">
          Whether or not to cause a typing caret to be visible in the content area. Default is false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          The URL of the content to appear in the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="browsertypeAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="checkboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attributeGroup ref="oncommand" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checked" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checked">
          Indicates whether the element is checked or not.
          Use hasAttribute() to determine whether this attribute is set instead of getAttribute().
          For buttons, the type attribute must be set to checkbox or radio for this attribute to have any effect.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          Set this to the URL of an image to appear in the checkbox. If this attribute is left out, no image appears. You can have both an image and a label.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. The value of the preference will be updated to match the value property of the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="captionElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="groupboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accessibleType" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accessibleType">
          A value indicating the type of accessibility object for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>


  <xs:attributeGroup name="colorpickerElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="color" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/color">
          The currently selected color. This is modified when the user selects a color. You can assign a string of the form #RRGGBB to this property to change the selected color.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onchange" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onchange">
          The code in the onchange attribute is called when the value of the element is changed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. The value of the preference will be updated to match the value property of the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/colorpicker.type">
          If this attribute is not present, the colorpicker is displayed inside the window. If this is set to the text button, the colorpicker is displayed as a button. When the user clicks the button, a popup appears for the user to select a color.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="commandElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="oncommand" />
  </xs:attributeGroup>


  <xs:attributeGroup name="commandsetElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="commandupdater" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/commandupdater">
          If true, the commandset is used for updating commands. Typically, this is used to update menu commands such as Undo and Cut based on when an event occurs. For example, since the Cut command is only valid when something is selected, a command updater might be used when the select event occurs.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="events" use="optional" type="eventsAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/commandset">
          A comma-separated list of event names that the command updater will update upon. If this attribute is not specified, or you set it to the value '*', all events are valid. Valid events are listed below, or you can use your own events. You can send a custom event by calling the UpdateCommands  method of the command dispatcher.
          * focus: Occurs when the focused element changes.
          * select: Occurs when the selected text changed.
          * clipboard: Occurs when the clipboard is changed.
          * undo: Occurs when the undo buffer is changed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="oncommandupdate" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/oncommandupdate">
          This event occurs when a command update occurs. You would use this to update the disabled status of items.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="targets" use="optional" type="xs:IDREFS">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/targets">
          A comma-separated list of element ids that the command updater will update upon. If this attribute is not specified, or you set it to the value '*', all elements are valid. The command update will only occur when the event occurs to one of the specified elements.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="datepickerElementAttributes">
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="firstdayofweek" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/firstdayofweek">
          which day of the week to display as the first day in the grid. The values range from 0 to 6, where 0 is Sunday and 6 is Saturday. The default value is determined by the locale, so only use this attribute if you want to override it.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:integer">
          <xs:minInclusive value="0" />
          <xs:maxInclusive value="6" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="readonly" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/readonly">
          If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the "tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="datapickertypeAttributeType" />
    <xs:attribute name="value" use="optional" type="datepickervalueAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The initial value of the datepicker in the form YYYY-MM-DD.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="descriptionElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="dialogheaderElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="description" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/description">
          Descriptive text to appear in addition to the dialog title.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="title" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/title">
          The text to appear in the title bar of the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="editorElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="editortype" use="optional" type="editortypeAttributeType" />
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/editor.src">
          The URL of the content to appear in the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/editor.type">
          If set to the string content-primary, this editor becomes the primary content for the page. The window for the primary content can be retrieved more conveniently using window.content.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="iframeElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="showcaret" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/showcaret">
          Whether or not to cause a typing caret to be visible in the content area. Default is false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          The URL of the content to appear in the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="browsertypeAttributeType" />
    <xs:attribute name="transparent" use="optional" type="iframetransparentAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/iframe.transparent">
          Set the background of an iframe as transparent. Available values:
          * transparent: This results in the iframe's background being transparent. This can be used to workaround things like bug 540911.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="imageElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="onerror" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onerror">
          This event is sent to an image element when an error occurs loading the image.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onload" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onload">
          This event handler will be called on the image element when the image has finished loading. This applies whether the image is applied via the src  attribute or the list-style-image style property. If you change the image, the event will fire again when the new image loads. This event will not bubble up the element tree.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          The URL of the content to appear in the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="validate" use="optional" type="validateAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="keyElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="key" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/key">
          The character that must be pressed. This should be set to a displayable character.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="keytext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/keytext">
          A label for the keyboard shortcut. This text would appear next to a menuitem label if that menuitem is associated with the key element via its key  attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="modifiers" use="optional" type="modifiersAttributeType" />
    <xs:attributeGroup ref="oncommand" />
    <xs:attribute name="phase" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/phase">
          The event phase where the handler is invoked. This should be set to the value capturing to indicate during the event capturing phase or target to indicate at the target element or left out entirely for the bubbling phase.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="keycode" use="optional" type="keycodes">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/keycode">
          For keys that do not have displayable characters, such as the Enter key or function keys, use this attribute instead of the key  attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="labelElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="control" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/control">
          This attribute specifies the id  of the element with which the label is associated. When the user clicks on the label, the associated element is given focus.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="href" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/href">
          Defines a URL to open when this element is clicked. Requires the class attribute to include text-link.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The text to be used for the label.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="listboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disableKeyNavigation" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disableKeyNavigation">
          If this attribute is not used, the user can navigate to specific items within the element by pressing keys corresponding to letters in the item's label. This is done incrementally, so typing more letters with select more specific items. This feature may be disabled by setting this attribute to true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. The value of the preference will be updated to match the value property of the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="rows" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/rows">
          The number of rows to display in the element. If the element contains more than this number of rows, a scrollbar will appear which the user can use to scroll to the other rows. To get the actual number of rows in the element, use the getRowCount method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="seltype" use="optional" type="seltypeAttributeType" />
    <xs:attribute name="suppressonselect" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/suppressonselect">
          If this attribute is not specified, a select event is fired whenever an item is selected, either by the user or by calling one of the select methods. If set to true, the select event is never fired.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="listitemElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checked" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checked">
          Indicates whether the element is checked or not.
          Use hasAttribute() to determine whether this attribute is set instead of getAttribute().
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="current" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/current">
          This attribute will be set to true if the listitem is the current item. This is typically used by a theme to customize the focus ring. To change the currently selected item in a listbox, use the listbox property selectedItem.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference
          . This attribute only has any effect when used inside a prefwindow
          . The value of the preference will be updated to match the value
          property of the element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selected">
          Indicates whether the element is selected or not. This value is read-only. To change the selection, set either the selectedIndex
          or selectedItem
          property of the containing element.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/type">
          You can make an item in a listbox
          a checkbox by setting this attribute to the value checkbox.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="listcellElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes"/>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/type">
          You can make a cell in a listbox
          a checkbox by setting this attribute's value to checkbox.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="listheaderElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="notificationElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="persistence" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/persistence">
          The persistence may be set to a non-zero value so that the notificationbox
          's removeTransientNotifications
          method does not remove them. This may be used to close a set of notifications as a group without affecting other notifications.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="priority" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/priority">
          Numeric value that specifies the order in which the notifications appear. Should be one of the constants described in the notificationbox
          's appendNotification
          method.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="notificationTypeAttributeType" />
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="observesElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="attribute" type="xs:string" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/observes">
          Type: attribute name
          The attribute that the observer is observing. When the value of the attribute changes, the broadcast event is called on the observer. Use the value * to observe all attribute of the broadcasters. The id , ref , and persist attributes are not observed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="element" type="xs:IDREF" use="optional">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/observes">
          The id  of the broadcaster  element that the observer is observing.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="overlayElementAttributes">
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="id" />
  </xs:attributeGroup>

  <xs:attributeGroup name="panelElementAttributes">
    <xs:attribute name="backdrag" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/backdrag">
          Requires Gecko 7.0
          Setting the backdrag attribute on a XUL panel lets the user move the panel by clicking and dragging anywhere on its background area.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="close" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/close">
          New in Firefox 4
          If the panel has a titlebar, set the panel's close attribute to true to have a close button appear on the titlebar. Pressing the close button will close the panel.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="fade" use="optional" type="panelfadeAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/panel.fade">
          Requires Gecko 2.0
          The fade attribute, which may only be used with arrow panels, lets you set up a panel that will automatically fade away after a short time. The default is none.
          * none - The panels doesn't automatically fade away.
          * slow - The panels slowly fades away after a short time.
          * fast - The panels quickly fades away after a short time.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="flip" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/panel.flip">
          Requires Gecko 2.0
          Normally, when a popup opens near the edge of the screen, it flips over to open on the opposite side of the anchor, so that it doesn't extend off the screen. For example, if the menu doesn't have room to open downward, it flips to open upward instead; this is a vertical flip. Horizontal flipping doesn't normally happen, since this would cause menus to open in strange places. For arrow popups, however, being able to flip horizontally makes sense. This attribute, set to both, permits that behavior. You will not normally have to use this attribute, since it's automatically applied to arrow panels.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ignorekeys" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ignorekeys">
          If false, the default value, the Escape key may be used to close the panel. If true, the Escape key cannot be used to close the panel.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/panel.label">
          New in Firefox 4
          For panels with titlebars, the label on the titlebar.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="left" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/left">
          Overrides the horizontal position of the popup specified by the showPopup method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="level" use="optional" type="panellevelAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/panel.level">
          New in Firefox 3
          Specifies whether the panel appears on top of all windows, or just on top of the window the panel is in. If this attribute is not set, the popup window level depends on the platform. On Linux, the default value is top, otherwise, the default value is parent. If a panel has one or more text fields, this attribute should not be set, otherwise IME or on-screen keyboard popups will appear incorrectly. For these reasons, you should avoid setting the level if not needed.
          * top: The panel is shown in front of all other normal windows, including those of other applications.
          * parent: The panel is shown just above the window the panel is in, but behind other windows above it. If anchored, the child window maintains its relative position to its parent window.
          * floating: (New in Firefox 4) The panel floats above the window the panel is in. On Mac, the panel is only visible when the application is active.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="noautofocus" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/">
          If false, the default value, the currently focused element will be unfocused whenever the popup is opened or closed. If true, the focus is not adjusted.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="noautohide" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/">
          If false, the default value, the panel will be hidden when the user clicks outside the panel or switches focus to another application. If true, the panel will only be closed when the hidePopup method is called.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphidden" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopuphidden">
          This event is sent to a popup after it has been hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphiding" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopuphiding">
          This event is sent to a popup when it is about to be hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshowing" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopupshowing">
          This event is sent to a popup just before it is opened. This handler is usually used to dynamically set the contents when the user requests to display it. Returning false from this event handler prevents the popup from appearing.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshown" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopupshown">
          This event is sent to a popup after it has been opened, much like the onload event is sent to a window when it is opened.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="position" use="optional" type="panelpositionAttributeType" />
    <xs:attribute name="titlebar" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/titlebar">
          Set the panel's titlebar attribute to the value normal to display a panel with a titlebar. The noautohide attribute must be set to true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="top" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/top">
          Overrides the vertical position of the popup specified by the showPopup method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="paneltypeAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/panel.type">
          The panel type. Should be one of the following: 
          * autocomplete: Specify this for a panel that provides a tree for an autocomplete element.
          * autocomplete-richlistbox: (New in Firefox 3.0)  Specify this for a panel that provides a richlistbox for an autocomplete element.
          * arrow: Requires Gecko 2.0 Specify this for a panel that provides an arrow pointing at its anchor.
          * drag: Specify this for a panel that's being used as a drag image for a drag and drop operation.
          Otherwise leave this attribute out.
          Note: The arrow will draw as long as the panel doesn't overlap the anchor. If they overlap, the anchor won't be drawn. The panel may not appear on the side of the anchor that you requested in which case the arrow will automatically adjust.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="paramElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="index" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/index">
          The index within the SQL statement of the parameter.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="name" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/name">
          The name of a parameter within the SQL statement. This name should appear within the query preceded by a colon.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="paramtypeAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="progressmeterElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="mode" use="optional" type="progressmodeAttributeType" />
    <xs:attribute name="value" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          An integer ranging from 0 to 100 that indicates the progress. For instance, setting the value to "0" shows an empty bar, "100" shows a bar at full length and "25" shows the first quarter of the bar. Characters after the number are ignored.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="radioElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.



        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command
          element that is being observed by the element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.



        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="focused" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/focused">
          This attribute is true if the element is focused.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>

    <xs:attribute name="group" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/group">
          Type: string group name
          Buttons with type="radio" and the same value for their group attribute are put into the same group. Only one button from each group can be checked at a time. If the user selects one the buttons, the others in the group are unchecked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selected">
          Indicates whether the element is selected or not. This value is read-only. To change the selection, set either the selectedIndex
          or selectedItem
          property of the containing element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="radiogroupElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.



        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="focused" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/focused">
          This attribute is true if the element is focused.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference
          . This attribute only has any effect when used inside a prefwindow
          . The value of the preference will be updated to match the value
          property of the element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="resizerElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="dir" use="optional" type="resizerdirAttributeType" />
    <xs:attribute name="element" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/resizer.element">
          The id of the element that should be resized by the resizer.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/resizer.type">
          Requires Gecko 2.0
          Set this to the value "window" for a resizing grip that appears in the bottom corner of the window, used for resizing the window. As some platforms provide this resizing grip automatically, this type of resizer element will be hidden and ensure that the window does not get an extra resizer.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="richlistboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disableKeyNavigation" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disableKeyNavigation">
          If this attribute is not used, the user can navigate to specific items within the element by pressing keys corresponding to letters in the item's label. This is done incrementally, so typing more letters with select more specific items. This feature may be disabled by setting this attribute to true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. The value of the preference will be updated to match the value property of the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- <xs:attribute name="rows" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/rows">
          The number of rows to display in the element. If the element contains more than this number of rows, a scrollbar will appear which the user can use to scroll to the other rows. To get the actual number of rows in the element, use the getRowCount method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute> -->
    <xs:attribute name="seltype" use="optional" type="seltypeAttributeType" />
    <xs:attribute name="suppressonselect" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/suppressonselect">
          If this attribute is not specified, a select event is fired whenever an item is selected, either by the user or by calling one of the select methods. If set to true, the select event is never fired.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use. Be aware, however, that some elements, such as textbox will display the value visually, so in order to merely associate data with an element, you could 1) Use another attribute like "value2" or "data-myAtt" (as in the HTML5 draft), as XUL does not require validation (less future-proof); 2) Use setAttributeNS() to put custom attributes in a non-XUL namespace (serializable and future-proof); 3) Use setUserData() (future-proof and clean, but not easily serializable).
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="richlistitemElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes"/>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.



        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="searchlabel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/searchlabel">
          New in Firefox 3!
          Text used for 'find-as-you-type' (FAYT) searching. In situations where the search text is ambiguous or missing, searchlabel can be used to give context to FAYT. If searchlabel is not present, FAYT falls back to use the label property.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selected">
          Indicates whether the element is selected or not. This value is read-only. To change the selection, set either the selectedIndex
          or selectedItem
          property of the containing element.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="preferenceElementAttributes">
    <!--xs:attributeGroup ref="xulElementAttributes" / -->
    <xs:attributeGroup ref="id" /> <!-- remove this if you include xulElementAttributes -->
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="instantApply" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/instantApply">
          If true, the preference will be changed as soon as the user interface is modified.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="inverted" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/inverted">
          For boolean preferences, if this attribute is set to true, it indicates that the value of the preference is the reverse of the user interface element attached to it. For instance, checking the checkbox disables the preference instead of enabling it.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="name" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/name">
          The name of the preference to change. For example, the browser's home page is set with the preference browser.startup.homepage.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onchange" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onchange">
          The code in the onchange attribute is called when the value of the element is changed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="readonly" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/readonly">
          If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="preferencetypeAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="prefpaneElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpaneload" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpaneload">
          Code defined here is called when the pane has been loaded, much like the load event for a window.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selected">
          This attribute will be set to true for the currently selected prefpane
          . To change the selected pane, use the prefwindow
          's showPane
          method.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="helpURI" use="optional" type="xs:anyURI">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/helpURI">
          The URI of the help page associated with a preference panel. The URI will be opened using the help viewer when the help button is pressed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/prefpane.src">
          Type: overlay URL
          The URL of the contents of preference pane. If this is not specified, the contents of the prefpane element is used.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="prefwindowElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attributeGroup ref="windowEvents" />
    <xs:attribute name="activetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/activetitlebarcolor">
          New in Firefox 3.
          Specify background color of the window's titlebar when it is active (foreground). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonalign" use="optional" type="alignAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/buttonalign">
          The value of the align  attribute for the box containing the buttons.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttondir" use="optional" type="dirAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/buttondir">
          The value of the dir  attribute for the box containing the buttons.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonorient" use="optional" type="orientAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/buttonorient">
          The value of the orient  attribute for the box containing the buttons.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttonpack" use="optional" type="packAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/buttonpack">
          The value of the pack  attribute for the box containing the buttons.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="buttons" use="optional" type="dialogButtonsAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/buttons">
          A comma-separated list of buttons to appear in the dialog box. The buttons will be placed in suitable locations for the user's platform and basic event handling will be performed automatically. The following values can be used in the list:
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultButton" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/defaultButton">
          Normally this attribute should not be set, but if it is, it specifies the default button in the dialog. Typically, this means that the button will be activated when the Enter key is pressed. This should be set to one of the same values as those for the buttons  attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="inactivetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/inactivetitlebarcolor">
          New in Firefox 3!
          Specify background color of the window's titlebar when it is inactive (background). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lastSelected" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/lastSelected">
          Set this to the id  of the last selected pane. It will be opened by default the next time the preferences dialog is opened.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onbeforeaccept" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onbeforeaccept">
          The code in this attribute is called when the OK button is pressed or the acceptDialog method is called.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogaccept" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ondialogaccept">
          The code in this attribute is called when the accept button is pressed, or when the acceptDialog method is called. If the handler returns true, the dialog will indeed go away, but if it returns false it will not.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogcancel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ondialogcancel">
          The code in this attribute is called when the"cancel" button is pressed or when the cancelDialog method is called. If the routine returns true, the dialog will indeed go away, but if it returns false it will not.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialogdisclosure" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ondialogdisclosure">
          The code in this attribute is called when the"disclosure" button is pressed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ondialoghelp" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ondialoghelp">
          The code in this attribute is called when the"help" button is pressed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpaneload" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpaneload">
          Code defined here is called when the pane has been loaded, much like the load event for a window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="title" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/title">
          The text to appear in the title bar of the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="prefwindowtypeAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="scaleElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attributeGroup ref="formElementEvents" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="increment" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/increment">
          The amount by which the attribute changes by when the arrows are clicked. The default value is 1.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="min" use="optional" type="xs:integer" default="0">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/min">
          The minimum value that may be set to. The default value is 0.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="max" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/max">
          The maximum value that may be set to. The default value is expected.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pageincrement" use="optional" type="xs:integer" default="10">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pageincrement">
          The amount by which the value of attribute changes by when  The default value is 10.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="scriptElementAttributes">
    <!--xs:attributeGroup ref="xulElementAttributes" /-->
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/script.src">
          The URL of the script.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="mimeTypes" default="application/javascript">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/script.type">
          The language of the script. Usually, you would set this to application/javascript.
          Note: If the JavaScript file is in chrome://, setting this attribute to application/javascript will always use the latest available JavaScript version. If you omit this attribute, the default (and older) JavaScript version is used (like you get when including a JavaScript file from web content without specifying a version number).
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="scrollbarElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="curpos" use="optional" type="xs:integer" default="0">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/curpos">
          The current position of the scrollbar, which ranges from 0 to the value of the maxpos  attribute. The default value is 0.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="increment" use="optional" type="xs:integer" default="1">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/increment">
          The amount by which the attribute changes by when the arrows are clicked. The default value is 1.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="maxpos" use="optional" type="xs:integer" default="100">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/maxpos">
          The maximum position of the scrollbar. The default value is 100.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pageincrement" use="optional" type="xs:integer" default="10">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pageincrement">
          The amount by which the value of the attribute changes by when ... . The default value is 10.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="stringbundleElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/stringbundle.src">
          The URL of the property file that contains the localized strings.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="tabElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="afterselected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/afterselected">
          This is set to true if the tab is immediately after the currently selected tab. This is set automatically set when needed and you shouldn't adjust it manually. This is primarily useful for themes so that they can adjust the appearance of the area around the selected tab.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="beforeselected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/beforeselected">
          This is set to true if the tab is immediately before the currently selected tab. This is set automatically set when needed and you shouldn't adjust it manually. This is primarily useful for themes so that they can adjust the appearance of the area around the selected tab.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="fadein" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/fadein">
          Requires Gecko 2.0
          This attribute is set to true if the tab is fading in or out. This typically means that the tab is in the process of appearing or disappearing.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="first-tab" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/first-tab">
          This attribute will be set to true for the first tab. This attribute should not be set manually, but is useful in a theme if the first tab should be styled differently.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="last-tab" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/last-tab">
          This attribute will be set to true for the last tab. This attribute should not be set manually, but is useful in a theme if the last tab should be styled differently.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="linkedpanel" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/linkedpanel">
          The id  of the linked tabpanel  element that will be displayed when the tab is selected. If this attribute is not used, the tab will be connected to the panel at the corresponding index in the tabpanels  element that the tab  is in its tabs  container. However, if this attribute is used, this behavior is overridden, and the tab will always be linked to a specific panel. This might be used to avoid duplication by linking several tabs to one panel with slight differences to the content adjusted in the select event.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="oncommand" />
    <xs:attribute name="pending" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pending">
          Requires Gecko 2.0
          This attribute is set to true if the tab is currently in the process of being restored by the session store service. Once the tab is restored, this attribute is removed. You can determine if a tab is being restored by checking to see if hasAttribute("pending") is true. If the user has turned on the "Don't load tabs until selected" preference, the pending attribute is set on tabs until they get loaded.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pinned" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pinned">
          Requires Gecko 2.0
          This attribute is set to true if the tab has been pinned (that is, if it's an app tab). The tabbrowser element's pinTab and unpinTab methods handle pinning and unpinning tabs.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="selected" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selected">
          This attribute is set to true if the tab is selected by default.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="unread" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/unread">
          Requires Gecko 9.0
          This attribute is set to true if the tab is unread; that is, either it has not yet been selected during the current session, or has changed since the last time it was selected. This attribute is not present if the tab is not unread.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="validate" use="optional" type="validateAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="tabpanelsElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="selectedIndex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/selectedIndex">
          Gets and sets the index of the currently selected panel. The first item is at index 0.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="tabsElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="closebutton" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/closebutton">
          This attribute is no longer supported starting with Gecko 1.9.2.
          If this attribute is set to true, the tabs row will have a"new tab" button and"close" button on the ends. This feature is used by the tabbrowser to provide the facilities for adding and closing tabs. You can set an image to the"new tab" and"close" buttons by applying them to the tabs-newbutton and tabs-closebutton classes respectively.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disableclose" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disableclose">
          If this attribute is true the close button will be disabled.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onclosetab" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onclosetab">
          This script will be called when the close tab button is clicked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onnewtab" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onnewtab">
          Not in Firefox!
          This script will be called when the new tab button is clicked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onselect" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onselect">
          This event is sent to the tabs element when this tab is changed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="setfocus" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/setfocus">
          If true or omitted, the focus will be given to the first element in the corresponding tabpanel when the tabs are navigated via the keyboard. If this attribute is false, the focus does not change during navigation.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tooltiptextnew" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tooltiptextnew">
          Not in Firefox!
          Used to set the text which appears in the tooltip when the user moves the mouse over the new button in the tab row.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="tabboxElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="eventnode" use="optional" type="eventnodeAttributeType" />
    <xs:attribute name="handleCtrlPageUpDown" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/handleCtrlPageUpDown">
          If set to true or omitted, the Control and Page Up or Page Down keys can be used to switch to the next or previous tab. If this attribute is set to false, these keys do not navigate between tabs.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="handleCtrlTab" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/handleCtrlTab">
          If set to true or omitted, the tabbox
          will switch to the next tab when the Control and Tab keys are pressed. If the Shift key is also held down, the previous tab will be displayed. If this attribute is set to false, these keys do not navigate between tabs.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="tabbrowserElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="autocompleteenabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autocompleteenabled">
          Set to true to enable autocomplete of fields.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autocompletepopup" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autocompletepopup">
          The id of a popup element used to hold autocomplete results for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autoscroll" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autoscroll">
          Set to false to disable autoscroll for this browser. If this attribute is set to true or omitted, autoscroll will be enabled or depending on the user preference general.autoScroll.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="contentcontextmenu" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/contentcontextmenu">
          A reference to the context menu for the content area in the tabbrowser .
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="contenttooltip" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/contenttooltip">
          A reference to the tooltip element to be used for the content area in the tabbrowser .
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="handleCtrlPageUpDown" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/handleCtrlPageUpDown">
          If set to true or omitted, the Control and Page Up or Page Down keys can be used to switch to the next or previous tab. If this attribute is set to false, these keys do not navigate between tabs.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onbookmarkgroup" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onbookmarkgroup">
          Not in Firefox!
          This code executes when the user chooses the "Bookmark this Group of Tabs" command.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onnewtab" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onnewtab">
          Not in Firefox!
          This script will be called when the new tab button is clicked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabmodalPromptShowing" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabmodalPromptShowing">
          Requires Gecko 2.0!
          The number of tab modal prompts currently attached to the current tab.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="textnodeElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="value" use="optional" type="xs:anyURI">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/textnode.value">
          The text value to display. This value should be an RDF property.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="textboxElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <!-- <xs:attribute name="empty" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/empty">
          New in Firefox 3!
          Presence of this attribute indicates that the emptyText is now being displayed. Can be used for styling purposes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute> -->
    <xs:attribute name="cols" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/cols">
          For multiline textboxes, the number of columns to display.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="decimalplaces" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/decimalplaces">
          New in Firefox 3!
          The number of decimal places to display. The default is 0, which doesn't show any decimal places. The value Infinity may be used if you want no limit on the number of decimal places. Note that decimal numbers are stored as floats.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="focused" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/focused">
          This attribute is true if the element is focused.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="emptytext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/emptytext">
          Deprecated since Gecko 2.0
          New in Firefox 3!
          A string that appears in the textbox when it has no value. This is superseded by the placeholder attribute in Gecko 2.0. The old name is retained for compatibility, but you should update your code.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="hidespinbuttons" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/hidespinbuttons">
          If true, the number box does not have arrow buttons next to it to allow the user to adjust the value. The value may still be adjusted with the keyboard. The default value is false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="increment" use="optional" type="xs:integer" default="1">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/increment">
          The amount by which the attribute changes by when the arrows are clicked. The default value is 1.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          New in Firefox 3!
          If present and not empty, this will be exposed to screen readers through the label property.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="max" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/max">
          The maximum value that the may be set to. The default value is .
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="maxlength" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/maxlength">
          The maximum number of characters that the textbox allows to be entered.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="min" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/min">
          The minimum value that the may be set to. The default value is 0.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="multiline" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/multiline">
          If true, the textbox displays multiple lines. If the user presses Enter, a new line is started. If false, the textbox only allows entry of one line.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="newlines" use="optional" type="newlinesAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/newlines">
          New in Firefox 3!
          How the text box handles pastes with newlines in them.
          Possible values: 
          * pasteintact - Paste newlines unchanged
          * pastetofirst - Paste text up to the first newline, dropping the rest of the text
          * replacewithcommas - Pastes the text with the newlines replaced with commas
          * replacewithspaces - Pastes the text with newlines replaced with spaces
          * strip - Pastes the text with the newlines removed
          * stripsurroundingwhitespace - Pastes the text with newlines and adjacent whitespace removed
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onblur" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/textbox.onblur">
          This event is sent when a textbox loses keyboard focus.
          Note: The behavior of this event has evolved over time. Prior to Gecko 1.9 (Firefox 3), the script code would execute in the context of the anonymous HTML input element inside the textbox binding. From Gecko 1.9 to Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0), the script code would actually execute twice, once in the context of the anonymous HTML input element and once in the context of the textbox element itself. As of Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0), the script code only runs in the context of the textbox element, matching the behavior of all other event handlers.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onchange" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/textbox.onchange">
          This event is sent when the value of the textbox is changed. The event is not sent until the focus is moved to another element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onfocus" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/textbox.onfocus">
          This event is sent when a textbox receives keyboard focus.
          Note: The behavior of this event has evolved over time. Prior to Gecko 1.9 (Firefox 3), the script code would execute in the context of the anonymous HTML input element inside the textbox binding. From Gecko 1.9 to Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0), the script code would actually execute twice, once in the context of the anonymous HTML input element and once in the context of the textbox element itself. As of Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0), the script code only runs in the context of the textbox element, matching the behavior of all other event handlers.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="oninput" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/oninput">
          This event is sent when a user enters text in a textbox. This event is only called when the text displayed would change, thus it is not called when the user presses non-displayable keys.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="oncommand" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/oncommand">
          This event handler is called when the command is activated. This occurs when a user selects a menu item or presses a keyboard shortcut attached to the command.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="placeholder" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/placeholder">
          Requires Gecko 2.0
          A string that appears in the textbox when it has no value.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="preference" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/preference">
          Connects the element to a corresponding preference. This attribute only has any effect when used inside a prefwindow. The value of the preference will be updated to match the value property of the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="readonly" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/readonly">
          If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="rows" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/rows">
          The number of rows to display in the element. If the element contains more than this number of rows, a scrollbar will appear which the user can use to scroll to the other rows. To get the actual number of rows in the element, use the getRowCount method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="searchbutton" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/searchbutton">
          If true, the search field will only fire a command event when the user presses the search button or presses the Enter key. Otherwise, the command event is fired whenever the user modifies the value. This attribute only applies to textboxes with the type search.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="size" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/size">
          The number of characters that can be displayed in the textbox.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="spellcheck" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/spellcheck">
          New in Firefox 2.0.0.2!
          If true, spell checking is enabled by default for the text box; if false, spell checking is disabled by default.
          If not specified, this defaults to false
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="timeout" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/timeout">
          For timed textboxes, the number of milliseconds before the timer fires a command event. The timer starts after the user types a character. If the user types another character, the timer resets.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="textboxtypeAttributeType" />
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The default value entered in a textbox. The attribute only holds the default value and is never modified when the user enters text. To get the updated value, use the value property. For number boxes, the default is 0 or the minimum value returned by the min property, whichever is higher.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="wrap" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/wrap">
          Set this attribute to the value off to disable word wrapping in the textbox. If this attribute is not specified, word wrapping is enabled.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="wraparound" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/wraparound">
          New in Firefox 3!
          If true, the value of the number box will wrap around when the maximum or minimum value is exceeded. The minimum and maximum values must both not be infinity.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="timepickerElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="hideseconds" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/hideseconds">
          Indicates whether to show the seconds field.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="readonly" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/readonly">
          If set to true, then the user cannot change the value of the element. However, the value may still be modified by a script.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="increment" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/increment">
          Indicates the number of minutes to skip each time the arrows are pressed. This should be used in combination with setting hideseconds  to true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The initial value of the timepicker in either the form HH:MM:SS or HH:MM.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="toolbarElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="autohide" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/docs/XUL/toolbar#a-autohide">
          Requires Gecko 1.9.2!
          When set to true, the toolbar will be invisible unless the Alt key is pressed by the user. When set to false, the default, the toolbar is visible. This only has an effect on Windows and needs to be combined with type="menubar" and a menubar element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>    
    <xs:attribute name="currentset" use="optional" type="xs:string"><!-- currentsetAttributeType -->
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/currentset">
          Not in SeaMonkey 1.x
          The current set of displayed items on the toolbar. This will be modified when the user customizes the toolbar. The value of this attribute should be a comma-separated list of item IDs from the toolbarpalette or, additionally, any of the following strings: "separator", "spring", "spacer".
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="customindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/customindex">
          Not in SeaMonkey 1.x
          Set this attribute to true on toolbar s that can be customized. This causes the set of buttons to be persisted across sessions.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="customizable" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/customizable">
          Not in SeaMonkey 1.x
          Set this attribute to true on toolbars that can be customized. This causes the set of buttons to be persisted across sessions.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="defaultset" use="optional" type="xs:IDREFS">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/defaultset">
          Not in SeaMonkey 1.x
          The default set of displayed items on the toolbar . This should be set to a comma-separated list of item IDs from the toolbarpalette . For example, back-button,forward-button,print-button.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="grippyhidden" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/grippyhidden">
          SeaMonkey only
          When set to true, the grippy will be hidden. When set to false, the default, the grippy will be shown.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="grippytooltiptext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/grippytooltiptext">
          SeaMonkey only
          The text to appear on the tooltip for the toolbar 's grippy  when the toolbar is collapsed. This would be used to label the grippy so that the user knows which toolbar it represents.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="iconsize" use="optional" type="iconsizeAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/iconsize">
          Indicates whether the toolbar should display large icons or small icons; this should be the string "large" or "small", respectively. These can vary from one toolbar to another within a given toolbox, whose iconsize attribute defines the default for all toolbars that don't specify an icon size.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="mode" use="optional" type="modeAttributeType">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/toolbar.mode">
          Not in SeaMonkey 1.x
          How the toolbarbuttons on the toolbar are displayed.
          * icons: Show only icons.
          * text: Show only text.
          * full: Show both.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="toolbarname" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/toolbarname">
          Not in SeaMonkey 1.x
          The name of the toolbar , which is listed on the Show/Hide toolbars menu.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="toolbarbuttonElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="accesskey" use="optional" type="character">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/accesskey">
          This should be set to a letter that is used as a shortcut key. This letter should be one of the characters that appears in the label  text for the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="autoCheck" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/autoCheck">
          If this attribute is true or left out, the checked state of the button will be switched each time the button is pressed. If this attribute is false, the checked state must be adjusted manually. When autoCheck is true, the button type should be"checkbox" or"radio".
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checked" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checked">
          Indicates whether the element is checked or not.
          Use hasAttribute() to determine whether this attribute is set instead of getAttribute().
          For buttons, the type attribute must be set to checkbox or radio for this attribute to have any effect.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="checkState" use="optional" type="integer012">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/checkState">
          This attribute may be used to create three state buttons, numbered 0, 1 and 2. When in state 0 or 1, pressing the button will switch to the opposite state. When in state 2, pressing the button will switch to state 0. This means that the button acts like a checkbox except that there is a third state which must be set manually by adjusting the check state. If you wish to have different behavior for how the states are adjusted, set the autoCheck attribute to false and adjust the state with a script. The type attribute must be set to checkbox for buttons with a check state.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="command" use="optional" type="xs:IDREF">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/command">
          Set to the id  of a command element that is being observed by the element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dlgtype" use="optional" type="dlgtypeAttributeType" />
    <xs:attribute name="group" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/group">
          Buttons with type="radio" and the same value for their group attribute are put into the same group. Only one button from each group can be checked at a time. If the user selects one the buttons, the others in the group are unchecked.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="image" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/image">
          The URL of the image to appear on the element. If this attribute is empty or left out, no image appears. The position of the image is determined by the dir  and orient  attributes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="oncommand" />
    <xs:attribute name="open" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/open">
          For the menu type  buttons, the open attribute is set to true when the menu is open. The open attribute is not present if the menu is closed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/type">
          The type of button. If this attribute is not present, a normal button is created. You can set this attribute to the value menu to create a button with a menu popup. This will typically cause the button to be displayed differently.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="validate" use="optional" type="validateAttributeType" />
  </xs:attributeGroup>

  <xs:attributeGroup name="tooltipElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="position" use="optional" type="positionAttributeType" />
    <!-- additional -->
    
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="default" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/default">
          If true, the tooltip is used as the default popup for displaying tooltips in the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="noautohide" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/noautohide">
          If this attribute is set to false or omitted, the tooltip will automatically disappear after a few seconds. If this attribute is set to true, this will not happen and the tooltip will only hide when the user moves the mouse to another element.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphidden" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopuphidden">
          This event is sent to a popup after it has been hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopuphiding" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopuphiding">
          This event is sent to a popup when it is about to be hidden.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshowing" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopupshowing">
          This event is sent to a popup just before it is opened. This handler is usually used to dynamically set the contents when the user requests to display it. Returning false from this event handler prevents the popup from appearing.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpopupshown" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpopupshown">
          This event is sent to a popup after it has been opened, much like the onload event is sent to a window when it is opened.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="wizardElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="activetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/activetitlebarcolor">
          New in Firefox 3!
          Specify background color of the window's titlebar when it is active (foreground). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="firstpage" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/firstpage">
          true if the wizard is on the first page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="inactivetitlebarcolor" use="optional" type="color">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/inactivetitlebarcolor">
          New in Firefox 3!
          Specify background color of the window's titlebar when it is inactive (background). Moreover this hides separator between titlebar and window contents. This affects only on Mac OS X.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lastpage" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/lastpage">
          True if the wizard is on the last page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onextra1" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onextra1">
          This should be set to code which is called when the user presses the extra1 button.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onextra2" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onextra2">
          This should be set to code which is called when the user presses the extra2 button.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onwizardback" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onwizardback">
          This should be set to code which is called when the user presses the Back button. Return true to allow the previous page to be displayed and false to disallow moving back a page. Use the canRewind property to indicate to the user (by disabling the Back button) that they cannot go back a page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onwizardcancel" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onwizardcancel">
          This should be set to code which is called when the user presses the Cancel button. Return true to allow the wizard to be cancelled, and close the wizard, or return false to prevent the wizard from being cancelled.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onwizardfinish" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onwizardfinish">
          This should be set to code which is called when the user presses the Finish button, which would appear in place of the Next button on the last page of the wizard. Return true to allow the wizard to be closed, accepting any values entered on the pages, or return false to prevent the wizard from being closed. Use the canAdvance property to indicate to the user (by disabling the Finish button) that they cannot end the wizard.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onwizardnext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onwizardnext">
          This should be set to code which is called when the user presses the Next button. Return true to allow the next page to be displayed and false to disallow moving to the next page. Use the canAdvance property to indicate to the user (by disabling the Next button) that they cannot go to the next page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pagestep" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pagestep">
          The index of the current page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="title" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/title">
          The text to appear in the title bar of the window.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="windowtype" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/windowtype">
          Set to a string which can be used to identify the type of window. This might be used, for example, to distinguish between a browser window and an editor window. Some of Mozilla's window handling functions use this attribute to group windows of the same type together.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="wizardpageElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="description" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/description">
          Descriptive text to appear in addition to the dialog title.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="next" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/next">
          Set to the pageid of the next page after this one. When set, the page with this pageID is displayed when the Next button is pressed. This can be used to create wizards that do not have a linear sequence. If one of the pages has a next  attribute, all of the pages should have one, except that last page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpageadvanced" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpageadvanced">
          This should be set to code which is called when the user presses the Next button while on the current page. Return true to allow the next page to be displayed and false to disallow moving to the next page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpagehide" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpagehide">
          The code in this attribute is called when the page is hidden, such as when moving to another page. Return true to accept the page change and false to prevent the page from changing. This code is called before the wizard's onwizardnext  and related functions.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpagerewound" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpagerewound">
          This should be set to code which is called when the user presses the Back button while on the current page. Return true to allow the previous page to be displayed and false to disallow moving to the previous page.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onpageshow" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onpageshow">
          The code in this attribute is called when the page is shown.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pageid" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pageid">
          This attribute should be set to a string that identifies the page's identifer in the wizard . This is used with the next  attribute. The wizard always starts with the wizardpage  that appears first in the wizard child list.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="treeElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="disabled" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disabled">
          Indicates whether the element is disabled or not. If this element is set to true the element is disabled. Disabled elements are usually drawn with grayed-out text. If the element is disabled, it does not respond to user actions, it cannot be focused, and the command event will not fire.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="disableKeyNavigation" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/disableKeyNavigation">
          If this attribute is not used, the user can navigate to specific items within the element by pressing keys corresponding to letters in the item's label. This is done incrementally, so typing more letters with select more specific items. This feature may be disabled by setting this attribute to true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="editable" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/editable">
          Indicates that the cells of the tree may be edited.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="enableColumnDrag" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/enableColumnDrag">
          When set to true, the user may drag the column headers around to change the order in which they are displayed.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="hidecolumnpicker" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/hidecolumnpicker">
          When set to false, a drop-down will appear in the upper right corner of the tree, which the user may use to show and hide columns. When set to true, the column picker will be hidden. The default value is false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="onselect" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/onselect">
          This event is sent to a tree when a row is selected, or whenever the selection changes. The user can select multiple rows by holding down Shift or Control and clicking on a row. The onselect event will be sent for each item added to or removed from the selection.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="rows" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/rows">
          The number of rows to display in the element. If the element contains more than this number of rows, a scrollbar will appear which the user can use to scroll to the other rows. To get the actual number of rows in the element, use the getRowCount method.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="seltype" use="optional" type="treeseltypeAttributeType" />
    <xs:attribute name="statedatasource" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/statedatasource">
          Chrome XUL may specify an RDF datasource to use to store tree state information. This is used to hold which tree items are open and which items are collapsed. This information will be remembered for the next time the XUL file is opened. If you do not specify this attribute, state information will be stored in the local store (rdf:local-store).
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tabindex" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/tabindex">
          The tab order of the element. The tab order is the order in which the focus is moved when the user presses the"tab" key. Elements with a higher tabindex are later in the tab sequence.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="treelines" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/treelines">
          Requires Gecko 1.9.1
          When set to true, lines are drawn connecting the lines in the tree; when false, the lines are not drawn. This is false by default.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="treechildrenElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="alternatingbackground" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/alternatingbackground">
          Obsolete since Gecko 2.0
          If true, the background of the tree's rows will alternate between two colors. You can use the :-moz-tree-row CSS style to do this instead.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="treeitemElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="ref" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="empty" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/empty">
          Set to true if the element is a container that contains no children. This will be set by the template builder as needed.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="uri" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/uri">
          For template-generated content, the attribute should be placed on the element where content generation should begin. Thus, it should be placed on an element that is a descendant of a template. The value should be set to rdf:*.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    
    
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          For tree
          s with only a single column, the label may be placed directly on the treeitem
          without the need for a treerow
          and treecell
          inside.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="open" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/open">
          For the menu type  buttons, the open attribute is set to true when the menu is open. The open attribute is not present if the menu is closed.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    
  </xs:attributeGroup>

  <xs:attributeGroup name="treerowElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="properties" use="optional" type="stringArray">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/properties">
          Space-separated list of property names
          Sets the properties of the element, which can be used to style the element. For more information, see Styling a Tree.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="treecellElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="width" />
    <xs:attribute name="ref" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ref">
          URI of an RDF resource
          For template-generated elements, this attribute is used to specify the root RDF node where content generation begins. This will correspond to the value of an about attribute on an RDF container. This attribute should be placed alongside the datasources attribute.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    
    <xs:attribute name="editable" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/editable">
          Allows the contents of individual cells in the column to be changed, especially useful when &lt;treecol type="checkbox"&gt;. Also useful for disabling editing of individual treecells. When the user double-clicks an editable cell, a text field appears in which the user can edit the contents of the cell. 
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="mode" use="optional" type="modetreecellAttributeType" />
    <xs:attribute name="properties" use="optional" type="stringArray" />
    
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          Set this to the URL of an image to appear in the tree cell. If this attribute is left out, no image appears. You can have both an image and a label.


        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="value" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/value">
          The string attribute allows you to associate a data value with an element. It is not used for any specific purpose, but you can access it with a script for your own use.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  
  <xs:attributeGroup name="treecolsElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="pickertooltiptext" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/pickertooltiptext">
          The text for the tooltip on the column picker.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="treecolElementAttributes">
    <xs:attributeGroup ref="xulElementNonOverridenAttributes" />
    <!-- overriden -->
    <xs:attributeGroup ref="class" />
    <xs:attributeGroup ref="container" />
    <xs:attributeGroup ref="left" />
    <xs:attributeGroup ref="position" />
    <xs:attributeGroup ref="top" />
    <xs:attributeGroup ref="orient" />
    <xs:attributeGroup ref="uri" />
    <xs:attributeGroup ref="dir" />
    <xs:attributeGroup ref="empty" />
    <xs:attributeGroup ref="ref" />
    <xs:attribute name="width" use="optional" type="xs:integer">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/width">
          The preferred width of the tree column. The value should not include a unit as all values are in pixels. Specifying widths for your columns causes Gecko to allow the tree to be scrolled horizontally if it is wider than the available space.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <!-- additional -->
    
    <xs:attribute name="crop" use="optional" type="cropAttributeType" />
    <xs:attribute name="cycler" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/cycler">
          If true, then the column is a cycler column. In the case, clicking on a cell in the column will alternate its state between on and off. This is used, for example, in a mail window, for a column that indicates that the message is read or unread with a small mark in the cell. If the cycler attribute is not set, the cell is a regular text cell.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="dragging" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/dragging">
          This attribute will be set to true if the column is being dragged. This attribute is set automatically; you shouldn't adjust it yourself.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="editable" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/editable">
          Allows the contents of cells in the column to be changed, especially useful when type="checkbox". When the user double-clicks an editable cell, a text field appears in which the user can edit the contents of the cell.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="fixed" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/fixed">
          If true, the size of the column in the tree cannot be adjusted by the user. Any splitter
          to either side will resize those columns while keeping the fixed column at a constant size. If false or not specified, the user can adjust the size of the column, typically by dragging the column header with the mouse.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="hideheader" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/hideheader">
          Set this to true to indicate that the tree column header should be displayed without any column header styling. If you don't set a label for that column either, the header is not displayed at all.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ignoreincolumnpicker" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/ignoreincolumnpicker">
          If true, the column does not appear in the column picker.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="label" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/label">
          The label that will appear on the element. If this is left out, no text appears.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="primary" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/primary">
          If set to true, the treecol
          will have indentation and twisties drawn to the left of it to indicate the hierarchy level of the rows. If no column has the primary attribute set to true, the tree
          may still contain nested rows, although no indication will be given to the user.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sort" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/sort">
          URI of an RDF predicate or XML attribute
          Set this to a RDF property or XML attribute to have the data in the column sorted based on that property. The property will usually be the same as that of the cell label.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="sortActive" use="optional" type="xs:boolean">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/sortActive">
          This should be set to true for the column which should be sorted by default.

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="src" use="optional" type="chromeOrRegularUrl">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/src">
          Set this attribute to have the treecol
          element use an image for the header instead of a label . You cannot have both an image and a label displayed in the header. Set this to the URL of an image to appear on the tree column header. If this attribute is left out, no image appears and the label is used instead. The class treecol-image
          must be used on the treecol
          element for the image to appear. You should still specify a label  for use in the column picker if ignoreincolumnpicker  is not true and hidecolumnpicker  is not true on the tree
          .

        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="type" use="optional" type="typeTreeColAttributeType" />
    
  </xs:attributeGroup>

  <xs:attributeGroup name="treeseparatorElementAttributes">
    <xs:attributeGroup ref="xulElementAttributes" />
    <xs:attribute name="properties" use="optional" type="stringArray">
      <xs:annotation>
        <xs:documentation source="http://developer.mozilla.org/en/XUL/Attribute/properties">
          space-separated list of property names
          Sets the properties of the element, which can be used to style the element. For more information, see Styling a Tree.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
</xs:schema>